﻿ 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using Xwang.Task.Dal;
using Xwang.Task.IDal;

namespace Xwang.Task.DalFactory
{
    /// <summary>
    /// DbSession:本质就是一个简单工厂，就是这么一个简单工厂，但从抽象意义上来说，它就是整个数据库访问层的统一入口。
    /// 因为拿到了DbSession就能够拿到整个数据库访问层所有的dal。
    /// </summary>
    public partial class DbSession :IDbSession
    {  
	
		private IDepInfoDal _DepInfoDal;
		public IDepInfoDal DepInfoDal {
            get {
                if (_DepInfoDal == null)
                {
                    _DepInfoDal =new DepInfoDal();
                }
                return _DepInfoDal;
            }
        }
	
		private INewsInfoDal _NewsInfoDal;
		public INewsInfoDal NewsInfoDal {
            get {
                if (_NewsInfoDal == null)
                {
                    _NewsInfoDal =new NewsInfoDal();
                }
                return _NewsInfoDal;
            }
        }
	
		private ITaskFeedbackDal _TaskFeedbackDal;
		public ITaskFeedbackDal TaskFeedbackDal {
            get {
                if (_TaskFeedbackDal == null)
                {
                    _TaskFeedbackDal =new TaskFeedbackDal();
                }
                return _TaskFeedbackDal;
            }
        }
	
		private ITaskInfoDal _TaskInfoDal;
		public ITaskInfoDal TaskInfoDal {
            get {
                if (_TaskInfoDal == null)
                {
                    _TaskInfoDal =new TaskInfoDal();
                }
                return _TaskInfoDal;
            }
        }
	
		private ITaskJoinUserDal _TaskJoinUserDal;
		public ITaskJoinUserDal TaskJoinUserDal {
            get {
                if (_TaskJoinUserDal == null)
                {
                    _TaskJoinUserDal =new TaskJoinUserDal();
                }
                return _TaskJoinUserDal;
            }
        }
	
		private IUserInfoDal _UserInfoDal;
		public IUserInfoDal UserInfoDal {
            get {
                if (_UserInfoDal == null)
                {
                    _UserInfoDal =new UserInfoDal();
                }
                return _UserInfoDal;
            }
        }
		/// <summary>
        /// 跨世纪的。
        /// 能实现一个设计模式：  UnitWork
        /// 能够做到让开发人员可以随意在BLL层空数据库访问进行批量的提交。
        /// </summary>
        /// <returns></returns>
        public int SaveChanges()
        {
            //这里只需要调用当前线程内部的上下文SaveChange就完事了。
            DbContext dbContext = ContextFactory.GetCurrentDbContext();


            return dbContext.SaveChanges();
        }
	}	
}